<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
                     "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr">
<head>
  <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
  <title>TeXで数式が書ける軽量マークアップ言語ULMULの開発</title>
  <meta name="author" content="Takeshi Nishimatsu" />
  <meta name="copyright" content="Copyright &#169; 2010 Takeshi Nishimatsu" />
  <link rel="stylesheet" href="ulmul-slidy.css" type="text/css" />
<script src="ulmul-slidy.js" type="text/javascript"></script>
  <link rel="shortcut icon" href="favicon.ico" />
</head>
<body>
<div class="slide cover">
<h1 id="LABEL-1">TeXで数式が書ける軽量マークアップ言語ULMULの開発</h1>
<p>
<a href="http://ulmul.rubyforge.org/">http://ulmul.rubyforge.org/</a>
</p>
<p>
西松毅
</p>
<!-- Contents -->
</div>


<div class="slide">
<h2 id="LABEL-2">自己紹介</h2>

<ul>
  <li>西松毅</li>
  <li>仙台から来ました</li>
  <li>LaTeXとREVTeXで論文を書く物理屋</li>
  <li>Fortranを多用</li>
  <li>物性理論: 半導体や強誘電体のコンピューターシミュレーション</li>
  <li>feramという強誘電体シミュレーションのフリーソフトウエア</li>
  <li>ULMULでドキュメントとホームページを作成</li>
</ul>
</div>


<div class="slide">
<h2 id="LABEL-3">ULMULの特徴</h2>

<ul>
  <li>独自の軽量マークアップ言語</li>
  <li>Ultra Lightweight MarkUp Language</li>
  <li>低機能</li>
  <li>テキストファイルはutf-8で書く</li>
  <li>「sudo gem install ulmul」だけでインストール</li>
  <li>コマンドulmul2html5でHTML5に変換</li>
  <li>コマンドulmul2xhtmlでXHTMLに変換</li>
  <li>文章中のTeXスタイルで書かれた数式をMathMLに変換</li>
  <li>ウェブ・ブラウザ+CSS+XHTML+JavaScriptを使ったプレゼン環境
    HTML Slidyに対応</li>
</ul>
<p>
このプレゼンも
</p>
<pre>$ ulmul2xhtml -c 3..2 -s ulmul-slidy.css \
  -j ulmul-slidy.js texconf10.txt &gt; texconf10.xhtml
</pre>
<p>
と作りました。
</p>
<p>
簡単な使い方を紹介します。
</p>
</div>


<div class="slide">
<h2 id="LABEL-4">箇条書きとverbatim</h2>
<p>
６段までネストした箇条書きが可能
</p>
<pre>　* 例えば
　* こんなかんじ
　* です
</pre>
<p>
を変換すると：
</p>

<ul>
  <li>例えば</li>
  <li>こんなかんじ</li>
  <li>です</li>
</ul>
<pre>１つスペースを置いて書き始めた行はverbatimになります。
Useful for examples of code
TEST TEST TEST
</pre>
</div>


<div class="slide">
<h2 id="LABEL-5">数式の書き方</h2>
<p>
文章中の２つのドル記号($)で挟まれた部分がTeX形式からMathML形式に変換されます。
また、Eq.…/Eq.で挟まれた行も次の例のように処理されます。
</p>
<p>
入力:
</p>
<pre>Here I show the Effective Hamiltonian $Heff$,
Eq. 1
   H^{\rm eff}
   = \frac{M^*_{\rm dipole}}{2} \sum_{\bm{R},\alpha}\dot{u}_\alpha^2(\bm{R})
   + \frac{M^*_{\rm acoustic}}{2}\sum_{\bm{R},\alpha}\dot{w}_\alpha^2(\bm{R})
   + V^{\rm self}(\{\bm{u}\})+V^{\rm dpl}(\{\bm{u}\})+V^{\rm short}(\{\bm{u}\})
   + V^{\rm elas,\,homo}(\eta_1,...,\eta_6)+V^{\rm elas,\,inho}(\{\bm{w}\})
   + V^{\rm coup,\,homo}(\{\bm{u}\}, \eta_1,...,\eta_6)+V^{\rm coup,\,inho}(\{\bm{u}\}, \{\bm{w}\})
   -Z^*\sum_{\bm{R}}\bm{\mathscr{E}}\cdot\bm{u}(\bm{R})
/Eq.
</pre>
<p>
出力:
</p>
<p>
Here I show the Effective Hamiltonian <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><msup><mi>H</mi><mrow><mi mathvariant='normal'>e</mi><mi mathvariant='normal'>f</mi><mi mathvariant='normal'>f</mi></mrow></msup></math>,
<math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><msup><mi>H</mi><mrow><mi mathvariant='normal'>e</mi><mi mathvariant='normal'>f</mi><mi mathvariant='normal'>f</mi></mrow></msup><mo>=</mo><mfrac><mrow><msubsup><mi>M</mi><mrow><mi mathvariant='normal'>d</mi><mi mathvariant='normal'>i</mi><mi mathvariant='normal'>p</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>l</mi><mi mathvariant='normal'>e</mi></mrow><mo>*</mo></msubsup></mrow><mrow><mn>2</mn></mrow></mfrac><munder><mo>&sum;</mo><mrow><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow><mo>,</mo><mi>&alpha;</mi></mrow></munder><msubsup><mover><mrow><mi>u</mi></mrow><mo>&sdot;</mo></mover><mi>&alpha;</mi><mn>2</mn></msubsup><mo>(</mo><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow><mo>)</mo><mo>+</mo><mfrac><mrow><msubsup><mi>M</mi><mrow><mi mathvariant='normal'>a</mi><mi mathvariant='normal'>c</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>u</mi><mi mathvariant='normal'>s</mi><mi mathvariant='normal'>t</mi><mi mathvariant='normal'>i</mi><mi mathvariant='normal'>c</mi></mrow><mo>*</mo></msubsup></mrow><mrow><mn>2</mn></mrow></mfrac><munder><mo>&sum;</mo><mrow><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow><mo>,</mo><mi>&alpha;</mi></mrow></munder><msubsup><mover><mrow><mi>w</mi></mrow><mo>&sdot;</mo></mover><mi>&alpha;</mi><mn>2</mn></msubsup><mo>(</mo><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>s</mi><mi mathvariant='normal'>e</mi><mi mathvariant='normal'>l</mi><mi mathvariant='normal'>f</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>}</mo><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>d</mi><mi mathvariant='normal'>p</mi><mi mathvariant='normal'>l</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>}</mo><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>s</mi><mi mathvariant='normal'>h</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>r</mi><mi mathvariant='normal'>t</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>}</mo><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>e</mi><mi mathvariant='normal'>l</mi><mi mathvariant='normal'>a</mi><mi mathvariant='normal'>s</mi><mo>,</mo><mspace width='0.167em' /><mi mathvariant='normal'>h</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>m</mi><mi mathvariant='normal'>o</mi></mrow></msup><mo>(</mo><msub><mi>&eta;</mi><mn>1</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>&eta;</mi><mn>6</mn></msub><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>e</mi><mi mathvariant='normal'>l</mi><mi mathvariant='normal'>a</mi><mi mathvariant='normal'>s</mi><mo>,</mo><mspace width='0.167em' /><mi mathvariant='normal'>i</mi><mi mathvariant='normal'>n</mi><mi mathvariant='normal'>h</mi><mi mathvariant='normal'>o</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>w</mi></mrow></mrow><mo>}</mo><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>c</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>u</mi><mi mathvariant='normal'>p</mi><mo>,</mo><mspace width='0.167em' /><mi mathvariant='normal'>h</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>m</mi><mi mathvariant='normal'>o</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>}</mo><mo>,</mo><msub><mi>&eta;</mi><mn>1</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>&eta;</mi><mn>6</mn></msub><mo>)</mo><mo>+</mo><msup><mi>V</mi><mrow><mi mathvariant='normal'>c</mi><mi mathvariant='normal'>o</mi><mi mathvariant='normal'>u</mi><mi mathvariant='normal'>p</mi><mo>,</mo><mspace width='0.167em' /><mi mathvariant='normal'>i</mi><mi mathvariant='normal'>n</mi><mi mathvariant='normal'>h</mi><mi mathvariant='normal'>o</mi></mrow></msup><mo>(</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>}</mo><mo>,</mo><mo>{</mo><mrow><mrow><mi mathvariant='bold-italic'>w</mi></mrow></mrow><mo>}</mo><mo>)</mo><mo>-</mo><msup><mi>Z</mi><mo>*</mo></msup><munder><mo>&sum;</mo><mrow><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow></mrow></munder><mrow><mrow><mrow><mrow><mi>&Escr;</mi></mrow></mrow></mrow></mrow><mo>&sdot;</mo><mrow><mrow><mi mathvariant='bold-italic'>u</mi></mrow></mrow><mo>(</mo><mrow><mrow><mi mathvariant='bold-italic'>R</mi></mrow></mrow><mo>)</mo></math>
</p>
<p>
数式を正しくご覧いただくには
</p>

<ul>
  <li>IE8 + MathPlayer <a href="http://www.dessci.com/en/products/mathplayer/">http://www.dessci.com/en/products/mathplayer/</a></li>
  <li>Firefox <a href="http://mozilla.jp/firefox/">http://mozilla.jp/firefox/</a></li>
</ul>
<p>
などのブラウザを試してみて下さい。
Firefox3.6でMathMLとHTML5を表示するには、URLとして about:config を入力して、
html5.enableをfalseからtrueに変更してください。
</p>
</div>


<div class="slide">
<h2 id="LABEL-6">図の挿入方法</h2>
<p>
入力:
</p>
<pre>Fig. 1 ruby.jpg
  The is a dummy figure for an example.
  Cute red logo of Ruby, isn't it?
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
/Fig.
</pre>
<p>
出力:
</p>
<div class="figure">
  <img src="ruby.jpg" alt="ruby.jpg" />
  <div class="figcaption">
  The is a dummy figure for an example.
  Cute red logo of Ruby, isn't it?
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
  TEST for the figure caption.
  </div>
</div>
</div>


<div class="slide">
<h2 id="LABEL-7">ULMULの仕組み</h2>

<ul>
  <li>ulmul.rbは数百行のRubyコード</li>
  <li>math_ml.rbライブラリを利用</li>
  <li>ulmul.rbをライブラリとして利用することも可能</li>
  <li>入力の各行をイベントとして状態遷移</li>
  <li>定数Ulmul::TABLEが状態遷移表</li>
  <li>aasm有限状態機械ライブラリに移行予定</li>
</ul>
</div>


<div class="slide">
<h2 id="LABEL-8">将来展望</h2>

<ul>
  <li>エラーメッッセージの充実</li>
  <li>表と色づけだれたコード</li>
  <li>eq:Hamiltonian, fig:foo, tab:bar, cod:baz などで式、図、表、コードの参照</li>
  <li>BibTeXみたいな参考文献の処理</li>
  <li></li>
  <li>やっぱりTeXの数式のソースは読みにくい</li>
  <li>STIX Fontを使ってどうにかならないか</li>
  <li></li>
  <li>かっこいいCSSファイル</li>
  <li>共同開発者募集中</li>
</ul>
</div>
</body>
</html>
